home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / CMPLTPAS / CASE.PAS < prev    next >
Pascal/Delphi Source File  |  1988-07-14  |  4KB  |  127 lines

  1. {--------------------------------------------------------------}
  2. {                            Case                              }
  3. {                                                              }
  4. { An upper/lower case conversion filter program for text files }
  5. {                                                              }
  6. {                             by Jeff Duntemann                }
  7. {                             Turbo Pascal V5.0                }
  8. {                             Last update 7/12/88              }
  9. {                                                              }
  10. {     From: COMPLETE TURBO PASCAL 5.0  by Jeff Duntemann       }
  11. {    Scott, Foresman & Co., Inc. 1988   ISBN 0-673-38355-5     }
  12. {--------------------------------------------------------------}
  13.  
  14.  
  15. PROGRAM Caser;           { "CASE" is a reserved word... }
  16.  
  17. CONST
  18.   Upper = True;
  19.   Lower = False;
  20.  
  21. TYPE
  22.   String40   = String[40];
  23.   String80   = String[80];
  24.   String255  = String[255];
  25.  
  26. VAR
  27.   I,J,K     : Integer;
  28.   Quit      : Boolean;
  29.   Ch        : Char;
  30.   WorkFile  : Text;
  31.   TempFile  : Text;
  32.   NewCase   : Boolean;
  33.   WorkLine  : String80;
  34.   WorkName  : String80;
  35.   TempName  : String80;
  36.   CaseTag   : String80;
  37.  
  38.  
  39. {$I FRCECASE.SRC }     { Described in Section 15.3 }
  40.  
  41.  
  42. {>>>>MakeTemp<<<<}
  43.  
  44. PROCEDURE MakeTemp(FileName : String80; VAR TempName : String80);
  45.  
  46. VAR
  47.   Point : Integer;
  48.  
  49. BEGIN
  50.   Point := Pos('.',FileName);
  51.   IF Point > 0 THEN Delete(FileName,Point,(Length(FileName)-Point)+1);
  52.   TempName := Concat(FileName,'.$$$')
  53. END;
  54.  
  55.  
  56. { CASER MAIN }
  57.  
  58. BEGIN
  59.   Quit := False;
  60.   IF ParamCount < 2 THEN    { Missing parms error }
  61.     BEGIN
  62.       Writeln('>>CASE<<  V2.00  By Jeff Duntemann');
  63.       Writeln('          From the book, COMPLETE TURBO PASCAL 5.0');
  64.       Writeln('          Scott, Foresman & Co. 1988');
  65.       Writeln('          ISBN 0-673-38355-5');
  66.       Writeln;
  67.       Writeln('This program forces all characters of a text file to either ');
  68.       Writeln('upper or lower case, as requested.  Characters already in ');
  69.       Writeln('the requested case are not disturbed.');
  70.       Writeln;
  71.       Writeln('CALLING SYNTAX:');
  72.       Writeln;
  73.       Writeln('CASE UP|DOWN <filespec>');
  74.       Writeln;
  75.       Writeln('For example, to force all lowercase characters of file');
  76.       Writeln('FOO.COB to uppercase, invoke CASE this way:');
  77.       Writeln;
  78.       Writeln('CASE UP FOO.COB');
  79.       Writeln;
  80.     END
  81.   ELSE
  82.     BEGIN
  83.       WorkName := ParamStr(2);
  84.       Assign(WorkFile,WorkName);  { Attempt to open the file }
  85.       {$I-} Reset(WorkFile); {$I+}
  86.       IF IOResult <>0 THEN
  87.         BEGIN
  88.           Writeln('<<Error!>> File ',WorkName,' does not exist.');
  89.           Writeln('           Invoke CASE again with an existing FileName.');
  90.           END
  91.       ELSE
  92.         BEGIN                 { See if UP/DOWN parm was entered }
  93.           CaseTag := ParamStr(1);
  94.           CaseTag := ForceCase(Upper,CaseTag);
  95.           IF CaseTag = 'UP' THEN NewCase := Upper ELSE
  96.             IF CaseTag = 'DOWN' THEN NewCase := Lower ELSE
  97.               Quit := True;
  98.           IF Quit THEN
  99.             BEGIN
  100.               Writeln
  101.               ('<<Error!>> The case parameter must be "UP" or "DOWN."');
  102.               Writeln
  103.               ('           Invoke CASE again using either "UP" or "DOWN".');
  104.             END
  105.           ELSE
  106.             BEGIN
  107.               Write('Forcing case ');
  108.               IF NewCase THEN Write('up ') ELSE Write('down ');
  109.               MakeTemp(WorkName,TempName);  { Generate temporary FileName }
  110.               Assign(TempFile,TempName);    { Open temporary file }
  111.               Rewrite(TempFile);
  112.               WHILE NOT EOF(WorkFile) DO
  113.                 BEGIN
  114.                   Readln(WorkFile,WorkLine);
  115.                   Write('.');               { Dot shows it's working }
  116.                   WorkLine := ForceCase(NewCase,WorkLine);
  117.                   Writeln(TempFile,WorkLine)
  118.                 END;
  119.               Close(TempFile);              { Close the temporary file }
  120.               Close(WorkFile);              { Close original source file... }
  121.               Erase(WorkFile);              { ...and delete it. }
  122.               Rename(TempFile,WorkName);    { Temporary file becomes source }
  123.             END
  124.        END
  125.     END
  126. END.
  127.